package com.bridgeintelligent.tag.customer.mapper;

import com.bridgeintelligent.tag.customer.pojo.Filter;
import com.bridgeintelligent.tag.customer.pojo.FilterGroup;
import com.bridgeintelligent.tag.customer.pojo.QueryModel;
import com.bridgeintelligent.tag.customer.provider.CustQueryModel;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
import java.util.Map;


/**
 * 客群筛选数据持久层
 */
@Mapper
public interface QueryModelMapper {


    /**
     * 新增筛选条件
     *
     * @param queryModel
     */
    void addQueryModel(QueryModel queryModel);

    /**
     * 新增条件组
     *
     * @param filterGroupSet
     */
    void addFilterGroup(FilterGroup filterGroupSet);

    /**
     * 新增过滤条件
     *
     * @param filterSet
     */
    void addFilter(Filter filterSet);

    /**
     * 存入条件组和过滤条件关联关系
     *
     * @param map
     */
    void addFilterAndFilterGroup(Map<String, String> map);

    /**
     * 根据客群id查询筛选条件
     *
     * @param customersId
     * @return
     */
    QueryModel findOneQueryModel(String customersId);

    /**
     * 根据id找标签名,用于回显
     *
     * @param field
     * @return
     */
    String findDimNameById(String field);

    /**
     * 根据客群id查找条件组
     *
     * @param fgmap
     * @return
     */
    List<FilterGroup> findFilterGroup(Map<String, String> fgmap);

    /**
     * 根据条件组id查询条件id
     *
     * @param id
     * @return
     */
    List<String> findFilterIds(String id);

    /**
     * 根据id查找条件
     *
     * @param filterId
     * @return
     */
    Filter findOneFilterById(String filterId);

    /**
     * 根据id查询标签项名称
     *
     * @param map
     * @return
     */
    String findValueName(Map<String, String> map);

    /**
     * 根据客群id查询所有的条件组
     *
     * @param customersId
     * @return
     */
    List<String> findFilterGroupBycustomersId(String customersId);

    /**
     * 删除filter
     *
     * @param filterId
     */
    void delFilterById(String filterId);

    /**
     * 删除filtergroup与filter的关联关系
     *
     * @param filterId
     */
    void delFilterAndFilterGroup(String filterId);

    /**
     * 删除条件组
     *
     * @param customersId
     */
    void delFilterGroup(String customersId);

    /**
     * 删除queryModel
     *
     * @param customersId
     */
    void delQueryModel(String customersId);

    /**
     * 根据索引ID查询当前时间日期
     * @param indexId
     * @return
     */
    String esRealTime(String indexId);

    /**
     * 根据客群ID查询数据日期，输出字段等信息
     * @param customerId
     * @return
     */
    CustQueryModel findInfoById(String customerId);
}